﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>等待进程 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 等待进程 function waits 遍历 the specified process to exist." />
<meta name="ahk:equiv-v1" content="commands/Process.htm#Wait" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>等待进程</h1>

<p>等待指定的进程存在.</p>

<pre class="Syntax">PID := <span class="func">等待进程</span>(PIDOrName <span class="optional">, Timeout</span>)</pre>

<h2 id="Parameters">参数</h2>
<dl>
    <dt>PIDOrName</dt>
    <dd>
        <p>类型: <a href="../Concepts.htm#numbers">整数</a>或<a href="../Concepts.htm#strings">字符串</a></p>
        <p>指定数字(PID) 或进程名:</p>
        <p><strong>PID:</strong> 进程 ID, 唯一标识一个特定进程的数字(只有在此进程的生存期这个数字才有意义). 新运行的进程的 PID 可以通过 <a href="Run.htm">运行</a> 函数获取. 同样的, 窗口的 PID 可以通过 <a href="WinGetPID.htm">获取窗口进程编号</a> 获取. <a href="ProcessExist.htm">进程是否存在</a> 也可以用来获取 PID.</p>
        <p><strong>Name:</strong> 进程的名称, 通常和它的可执行文件名相同(不带路径), 例如 notepad.exe 或 winword.exe. 由于一个名称可能与多个正在运行的进程匹配, 因此将仅对第一个进程进行操作. 名称不区分大小写.</p>
    </dd>
    <dt>Timeout</dt>
    <dd>
        <p>类型: <a href="../Concepts.htm#numbers">整数</a>或<a href="../Concepts.htm#numbers">浮点数</a></p>
        <p>如果忽略, 该函数将无限期地等待. 否则, 指定在超时之前等待的秒数(可以包含小数).</p>
    </dd>
</dl>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
<p>如果发现了指定的进程, 该函数返回该进程的<a href="../misc/WinTitle.htm#ahk_pid">进程 ID (PID)</a>. 如果函数超时, 则返回 0.</p>

<h2 id="Remarks">备注</h2>
<p>进程每 100 毫秒检查一次; 当条件满足时, 函数停止等待. 换句话说, 它不会等待超时过期, 而是立即返回并继续执行脚本. 此外, 当函数处于等待状态时, 可以通过<a href="../Hotkeys.htm">热键</a>, <a href="../objects/Menu.htm">自定义菜单项</a>或<a href="SetTimer.htm">计时器</a>启动新的<a href="../misc/Threads.htm">线程</a>.</p>

<h2 id="Related">相关</h2>
<p><a href="ProcessWaitClose.htm">等待进程关闭</a>, <a href="Run.htm">运行</a>, <a href="WinWait.htm">等待窗口</a>, <a href="Process.htm">Process 函数</a>, <a href="Win.htm">Win 函数</a></p>

<h2 id="Examples">示例</h2>

<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a>: 对于记事本的出现, 最多等待 5.5 秒. 如果记事本出现在此秒数内, 则其优先级设置为 "Low", 并且脚本自身的优先级设置为 "High". 之后, 记事本将被关闭, 如果在 5 秒内未关闭, 将显示一个消息框:</p>
<pre class="NoIndent">NewPID := 等待进程("notepad.exe", 5.5)
如果 not NewPID
{
    信息框 "The specified process did not appear within 5.5 seconds."
    返回
}
<em>; 否则:</em>
信息框 "A matching process has appeared (Process ID is " NewPID ")."
设置进程优先级 "Low", NewPID
设置进程优先级 "High"  <em>; 把脚本自己设置为高优先级.</em>
关闭窗口 "无标题 - 记事本"
WaitPID := 等待进程关闭(NewPID, 5)
如果 WaitPID <em>; PID 仍然存在.</em>
    信息框 "The process did not close within 5 seconds."</pre>
</div>

</body>
</html>